home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / editors / emacs / xemacs / xemacs-1.006 / xemacs-1 / lib / xemacs-19.13 / lisp / dired / dired-xemacs-menu.el < prev    next >
Encoding:
Text File  |  1995-08-04  |  8.6 KB  |  248 lines

  1. ;;;  dired-xemacs-menu.el: A menu for the dired-mode.
  2. ;;;  v2.90; 7 Dec 1993
  3. ;;;  Copyright (C) 1993  Heiko Muenkel
  4. ;;;  email: muenkel@tnt.uni-hannover.de
  5. ;;;
  6. ;;;  This program is free software; you can redistribute it and/or modify
  7. ;;;  it under the terms of the GNU General Public License as published by
  8. ;;;  the Free Software Foundation; either version 1, or (at your option)
  9. ;;;  any later version.
  10. ;;;
  11. ;;;  This program is distributed in the hope that it will be useful,
  12. ;;;  but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. ;;;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. ;;;  GNU General Public License for more details.
  15. ;;;
  16. ;;;  You should have received a copy of the GNU General Public License
  17. ;;;  along with this program; if not, write to the Free Software
  18. ;;;  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  
  20. (require 'mode-motion)
  21.  
  22. ;; Popup and Pulldown Menu
  23.  
  24. (defvar dired-menu
  25.   '("Dired Commands"
  26.     ["Open File" dired-find-file t]
  27.     ["Open File Other Window" dired-find-file-other-window t]
  28.     ["View File" dired-view-file t]
  29.     "----"
  30.     ("Mark"
  31.      ["Mark File" dired-mark-subdir-or-file t]
  32.      ["Mark Files in Region" dired-mark-region (mark)]
  33.      ["Mark Files by Regexp..." dired-mark-files-regexp t]
  34.      ["Mark All Directories" dired-mark-directories t]
  35.      ["Mark All Executables" dired-mark-executables t]
  36.      ["Mark All Symbolic Links" dired-mark-symlinks t]
  37.      "----"
  38.      ["Unmark File" dired-unmark-subdir-or-file t]
  39.      ["Unmark All Files" (dired-unflag-all-files nil) t]
  40.      ["Unmark All Files (Query)..." (dired-unflag-all-files nil t) t]
  41.      ["Unmark Files in Region" dired-unmark-region (mark)]
  42.      )
  43.     ("Copy/Link"
  44.      ["Copy Files..." dired-do-copy t]
  45.      ["Copy Files by Regexp..." dired-do-copy-regexp t]
  46.      "----"
  47.      ["Symlink Files in Directory..." dired-do-symlink t]
  48.      ["Symlink Files in Directory by Regexp..." dired-do-symlink-regexp t]
  49.      "----"
  50.      ["Hard-Link Files in Directory..." dired-do-hardlink t]
  51.      ["Hard-Link Files in Directory by Regexp..." dired-do-hardlink-regexp t]
  52.      )
  53.     ("Rename"
  54.      ["Rename Marked Files..." dired-do-move t]
  55.      ["Rename Files by Regexp..." dired-do-rename-regexp t]
  56.      "----"
  57.      ["Downcase Names of Marked Files..." dired-downcase t]
  58.      ["Upcase Names of Marked Files..." dired-upcase t]
  59.      )
  60.     ("Delete"
  61.      ["Delete Marked Files..." dired-do-delete t]
  62.      ["Delete Flagged Files..." dired-do-deletions t]
  63.      "----"
  64.      ["Flag Marked Files for Deletion" dired-flag-file-deleted t]
  65.      ["Flag Files in Region for Deletion" dired-flag-region (mark)]
  66.      ["Flag Files for Deletion by Regexp..."  dired-flag-regexp-files t]
  67.      ["Flag Backup Files for Deletion" dired-clean-directory t]
  68.      ["Flag Autosave Files for Deletion" dired-flag-auto-save-files t]
  69.      "----"
  70.      ["Unflag Marked Files" dired-unflag t]
  71.      ["Unflag Backup Files" dired-backup-unflag t]
  72.      ["Unflag All Files" (dired-unflag-all-files nil) t]
  73.      ["Unflag All Files (Query)..." (dired-unflag-all-files nil) t]
  74.      ["Unflag Files in Region" dired-unflag-region (mark)]
  75.      )
  76.     ("Shell commands"
  77.      ["Compress Marked Files..." dired-do-compress t]
  78.      ["Uncompress Marked Files..." dired-do-uncompress t]
  79.      ["Print Marked Files..." dired-do-print t]
  80.      ["Shell Command on Marked Files..." dired-do-shell-command t]
  81.      "----"
  82.      ["Load Marked Files" dired-do-load t]
  83.      ["Byte-Compile Marked Files..." dired-do-byte-compile t]
  84.      "----"
  85.      ["Diff File Against Backup" dired-backup-diff t]
  86.      ["Diff File..." dired-diff t]
  87.      "----"
  88.      ["Change Permissions of Marked Files..." dired-do-chmod t]
  89.      ["Change Group of Marked Files..." dired-do-chgrp t]
  90.      ["Change Owner of Marked Files..." dired-do-chown t]
  91.      )
  92.     "----"
  93.     ("Directory"
  94.      ["Up Directory" dired-up-directory t]
  95.      ["Home Directory" (dired "~/") t]
  96.      "----"
  97.      ["Dired..." dired t]
  98.      ["Dired Other Window..." dired-other-window t]
  99.      ["Redisplay All Files" revert-buffer t]
  100.      "----"
  101.      ["Create Directory..." dired-create-directory t]
  102.      "----"
  103.      ["Insert Subdirectory" dired-insert-subdir t]
  104.      ["Hide Subdirectory" dired-kill-subdir t]
  105.      ["Hide All Subdirectories..." dired-kill-tree t]
  106.      )
  107.     ("Goto"
  108.      ["Next Directory Line" dired-next-dirline t]
  109.      ["Previous Directory Line" dired-prev-dirline t]
  110.      ["Next Marked File" dired-next-marked-file t]
  111.      ["Previous Marked File" dired-prev-marked-file t]
  112.      "----"
  113.      ["File..." dired-goto-file t]
  114.      ["Top of Directory..." dired-goto-subdir t]
  115.      ["Down Directory" dired-tree-down t]
  116.      ["Up Directory" dired-tree-up t]
  117.      )
  118.     ("Display"
  119.      ["Undisplay Line or Subdirectory" dired-kill-line-or-subdir t]
  120.      ["Undisplay Tree" dired-kill-tree t]
  121.      ["Undisplay Marked Lines" dired-do-kill t]
  122.      "----"
  123.      ["Redisplay All Files" revert-buffer t]
  124.      ["Redisplay All Marked Files" dired-do-redisplay t]
  125.      ["Undo" dired-undo t]
  126.      "----"
  127.      ["Sort by Date/Name (Toggle)" dired-sort-toggle-or-edit t]
  128.      ["Edit `ls' Switches..." (dired-sort-toggle-or-edit t) t]
  129.      )
  130.     "----"
  131.     ("Options, This Buffer"
  132.      ["Action is find-file" (set (make-local-variable 'dired-mouse-action)
  133.                  'dired-mouse-find-file)
  134.       :style radio
  135.       :selected (eq dired-mouse-action 'dired-mouse-find-file)]
  136.      ["Action is find-file-other-window"
  137.       (set (make-local-variable 'dired-mouse-action)
  138.        'dired-mouse-find-file-other-window)
  139.       :style radio
  140.       :selected (eq dired-mouse-action 'dired-mouse-find-file-other-window)])
  141.     ("Options, Global"
  142.      ["Action is find-file" (setq-default dired-mouse-action
  143.                       'dired-mouse-find-file)
  144.       :style radio
  145.       :selected (eq (default-value 'dired-mouse-action)
  146.               'dired-mouse-find-file)]
  147.      ["Action is find-file-other-window"
  148.       (setq-default dired-mouse-action 'dired-mouse-find-file-other-window)
  149.       :style radio
  150.       :selected (eq (default-value 'dired-mouse-action)
  151.               'dired-mouse-find-file-other-window)])
  152.     "----"
  153.     ["Explain Last Failure" dired-why t]
  154.     )
  155.   "*The menu for Dired.")
  156.  
  157. (defun dired-mouse-file-on-line-p (event)
  158.   "Return t if there is a file under the mouse."
  159.   (interactive "@e")
  160.   (save-excursion
  161.     (mouse-set-point event)
  162.     (if (dired-move-to-filename)
  163.     t
  164.       nil)))
  165.  
  166. (defun dired-mode-motion-highlight-line (event)
  167.   (if (dired-mouse-file-on-line-p event)
  168.       (mode-motion-highlight-line event)))
  169.  
  170. (defun dired-install-menubar ()
  171.   "Installs the Dired menu at the menubar."
  172.   (if (and (boundp 'current-menubar) current-menubar
  173.        (not (assoc "Dired" current-menubar)))
  174.       (progn
  175.     (set-buffer-menubar (copy-sequence current-menubar))
  176.     (add-menu nil "Dired" (cdr dired-menu))))
  177.   (make-local-variable 'mode-motion-hook)
  178.   (setq mode-motion-hook '(dired-mode-motion-highlight-line
  179.                mode-motion-add-help-echo))
  180.   ;; #### double-click left is supposed to work but it doesn't.
  181.   ;; I'm not sure why.
  182.   (setq mode-motion-help-echo-string
  183.     "Middle button to select file under mouse.")
  184.   )
  185. (add-hook 'dired-mode-hook 'dired-install-menubar)
  186.  
  187. (defun dired-popup-menu (event)
  188.   "Display the Dired Menu."
  189.   (interactive "@e")
  190.   (mouse-set-point event)
  191.   (dired-next-line 0)
  192.   (popup-menu dired-menu))
  193.  
  194. (defun dired-mouse-find-file (event)
  195.   "Edit the file under the mouse."
  196.   (interactive "e")
  197.   (mouse-set-point event)
  198.   (dired-next-line 0)
  199.   (dired-find-file))
  200.  
  201. (defun dired-mouse-find-file-other-window (event)
  202.   "Edit the file under the mouse, in another window."
  203.   (interactive "e")
  204.   (mouse-set-point event)
  205.   (dired-next-line 0)
  206.   (dired-find-file-other-window))
  207.  
  208. (defvar dired-mouse-action 'dired-mouse-find-file
  209.   "*Function to be called when button2 is clicked on a file in Dired.")
  210.  
  211. (defun dired-mouse-do-action (event)
  212.   (interactive "e")
  213.   (funcall dired-mouse-action event))
  214.  
  215. (defun dired-mark-region (&optional form-to-eval)
  216.   "Mark all files in the region."
  217.   (interactive)
  218.   (or form-to-eval (setq form-to-eval '(dired-mark-subdir-or-file nil)))
  219.   (save-excursion
  220.     (let ((end (region-end)))
  221.       (goto-char (region-beginning))
  222.       (beginning-of-line)
  223.       (while (<= (point) end)
  224.     (save-excursion (eval form-to-eval))
  225.     (forward-line 1)))))
  226.  
  227. (defun dired-unmark-region ()
  228.   "Unmark all files in the region."
  229.   (interactive)
  230.   (dired-mark-region '(dired-unmark-subdir-or-file nil)))
  231.  
  232. (defun dired-flag-region ()
  233.   "Flag all files in the region for deletion."
  234.   (interactive)
  235.   (dired-mark-region '(dired-flag-file-deleted nil)))
  236.  
  237. (defun dired-unflag-region ()
  238.   "Unflag all files in the region for deletion."
  239.   (interactive)
  240.   (dired-mark-region '(dired-unflag 1)))
  241.  
  242.  
  243. (define-key dired-mode-map 'button2 'dired-mouse-do-action)
  244. (define-key dired-mode-map 'button3 'dired-popup-menu)
  245.  
  246.  
  247. (provide 'dired-xemacs-menu)
  248.